package com.study.spark.scala.chapter05

object Scala03_Function_Def {
  def main(args: Array[String]): Unit = {
    // TODO 函数式编程
    // 声明与调用

    // TODO 1.无参数，无返回值
    def func1(): Unit ={
      println("func1")
    }
    //func1()//func1
    // 可以省略小括号
    func1//func1

    // TODO 2.无参数，有返回值
    def func2(): String ={
      return "func2"
    }
    val str = func2()
    println(str)//func2

    // TODO 3.有参数，无返回值
    def func3(name : String): Unit ={
      println("name : "+name)
    }
    func3("zhangsan")//name : zhangsan

    // TODO 4.有参数，有返回值
    def func4(name : String): String ={
      return "name : "+name
    }
    val lisi = func4("lisi")
    println(lisi)//name : lisi

    // TODO 5.多参数，无返回值
    // 函数存在多参数时，调用时应该匹配参数类型和顺序
    // java中参数的传递全部是值传递
    def func5(name : String,age : Int): Unit ={
      println(s"name : $name"+s"age : $age")
    }
    func5("wangwu",20)//name : wangwuage : 20

    // TODO 6.多参数，有返回值
    def func6(name : String,age : Int): String ={
      val s =s"name : $name"+s"age : $age"
      return s
    }
    val zhaoliu = func6("zhaoliu",22)
    println(zhaoliu)//name : zhaoliuage : 22
  }

}
